package com.escool.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.escool.model.TbGrado;
import com.escool.model.TbNivel;
import com.escool.model.TbRecord;
import com.escool.model.TbRotacionesHasActividad;

import com.escool.model.TbRotaciones;


import com.escool.service.PeriodoEvaluacionService;
import com.escool.service.ProfAlumnoService;
import com.escool.service.RotacionActividadService;
import com.escool.service.RotacionesService;
import com.escool.service.GradosService;
import com.escool.service.NivelesService;
import com.escool.service.RolService;
import com.escool.service.TipoRecordService;
import com.escool.service.VinSedeSeccionService;

@Controller
public class RotacionesController {
	
	@Autowired
	RotacionesService RotacionesService;

	@Autowired
	VinSedeSeccionService VinSedeSeccionService;

	@Autowired
	ProfAlumnoService profAlumnoService;
	
	@Autowired
	TipoRecordService tipoRecordService;
	
	@Autowired
	RotacionActividadService rotacionActividadService;
	
	@Autowired
	PeriodoEvaluacionService pService;
	
	@RequestMapping("showRotacionesService")
	public String showRotacionesService(Map<String, Object> map,HttpServletRequest request){
		String id = request.getParameter("id");
		TbRotaciones tb = new TbRotaciones();
		tb.setCodigoEmp(id);
		map.put("tbRotacionesService", tb);
		map.put("TbRotacionesList", RotacionesService.listVwRotaciones(tb.getCodigoEmp()));
		return "/rotaciones";
	}
	
	@RequestMapping(value = "addRotacionesService", method = RequestMethod.POST)
	public String addRoles(@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService, BindingResult result){
		if (!result.hasErrors()) {
			RotacionesService.addTbRotaciones(tbRotacionesService);
			return "redirect:/showRotacionesService?id="+tbRotacionesService.getCodigoEmp();
		}
		return "";
	}
	
	@RequestMapping(value = "editRotacionesService", method = RequestMethod.POST)
	public String editRoles(@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService, BindingResult result){
		if (!result.hasErrors()) {
			RotacionesService.editTbRotaciones(tbRotacionesService);
			return "redirect:/showRotacionesService?id="+tbRotacionesService.getCodigoEmp();
		}
		return "";
	}
	
	@RequestMapping(value = "deleteRotacionesService", method = RequestMethod.POST)
	public String delRoles(@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService, BindingResult result){
		if (!result.hasErrors()) {
			RotacionesService.delTbRotaciones(tbRotacionesService.getIdtbRotaciones());
			return "redirect:/showRotacionesService?id="+tbRotacionesService.getCodigoEmp();
		}
		return "";
	}

	
	
	@RequestMapping("showRotActividad_2")
	public String showRotacionActividad(Map<String, Object> map,@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService, BindingResult result){		
		TbRotacionesHasActividad obj = new TbRotacionesHasActividad();
		System.out.println(tbRotacionesService.getIdtbRotaciones());
		obj.setTbRotaciones(RotacionesService.findTbRotaciones(tbRotacionesService.getIdtbRotaciones()));
		map.put("rotact", obj);
		map.put("rotactList", rotacionActividadService.listByRotacionesId(obj.getTbRotaciones().getIdtbRotaciones()));
		map.put("periodoList", pService.listPeriodo());
		return "rotacionActividad";
	}
	
	@RequestMapping("showRotActividad_1")
	public String showRotacionActividad1(Map<String, Object> map,@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService, BindingResult result){		
		TbRotacionesHasActividad obj = new TbRotacionesHasActividad();
		System.out.println(tbRotacionesService.getIdtbRotaciones());
		obj.setTbRotaciones(RotacionesService.findTbRotaciones(tbRotacionesService.getIdtbRotaciones()));
		map.put("rotact", obj);
		map.put("rotactList", rotacionActividadService.listByRotacionesId(obj.getTbRotaciones().getIdtbRotaciones()));
		map.put("periodoList", pService.listPeriodo());
		return "materiaPonderacion";
	}
	
	@RequestMapping("showComunicacionRecord_2")
	public String showRecord(Map<String, Object> map,@ModelAttribute("tbRotacionesService") @Valid TbRotaciones tbRotacionesService,BindingResult result){
		TbRecord tbRecord = new TbRecord();
		
		TbRotaciones dto = (TbRotaciones)RotacionesService.findTbRotaciones(tbRotacionesService.getIdtbRotaciones());
		tbRecord.setIdSeccionHasMateria(dto.getTbSedeSeccionHasMateria().getIdSedeSeccionHasMateria());
		System.out.println(dto.getTbSedeSeccionHasMateria().getIdSedeSeccionHasMateria());
		System.out.println(tbRecord.getIdSeccionHasMateria());
		map.put("rec", tbRecord);
		map.put("recList", profAlumnoService.listAllRecord());
		map.put("tiporecList", tipoRecordService.listAll());
		return "comunicacion";
	}
}
